/**
 * Material Category Table Management
 * 物料大类表管理
 */
var prefix = "/basic/basicArea";

layui.use(['table', 'form', 'jquery', 'layer'], function () {
    var $ = layui.jquery;
    var table = layui.table;
    var form = layui.form;

    var areaCode = Feng.getUrlParam("areaCode");

    /**
     * Initialize table columns
     * 初始化表格的列
     */
    function initColumn() {
        var columns = [
            [
                {type: 'radio'},
                {field: 'id', title: 'Primary Key', align: 'center', sort: true} ,// 主键
                {field: 'code', title: 'Material Category Code', align: 'center', sort: true}, // 物料大类编码
                {field: 'name', title: 'Material Category Name', align: 'center', sort: true}, // 物料大类名称
                {field: 'description', title: 'Description', align: 'center', sort: true}, // 备注
                {field: 'createTime', title: 'Create Time', align: 'center', sort: true}, // 创建时间
                {field: 'createUser', title: 'Create User', align: 'center', sort: true}, // 创建人
                {field: 'updateTime', title: 'Update Time', align: 'center', sort: true}, // 更新时间
                {field: 'updateUser', title: 'Update User', align: 'center', sort: true}, // 更新人
                {title: 'Operation', toolbar: '#tableBar', minWidth: 200, align: 'center'} // 操作
            ]
        ];
        return columns;
    }

    /**
     * Table Rendering
     * 表格渲染
     */
    var tableResult = Feng.initTable("basicMaterialTable", prefix + "/assignMaterialList?areaCode=" + areaCode, initColumn());

    /**
     * Click Search Button
     * 点击查询按钮
     */
    $('#btnSearch').click(function () {
        table.reload('basicMaterialTable', {
            where: {
                condition: $('#condition').val()
            }
        });
    });

    /**
     * Batch Assignment
     * 批量分配
     */
    $('#btnAssign').click(function () {
        var checkStatus = table.checkStatus('basicMaterialTable');
        var data = checkStatus.data;
        if (data.length === 0) {
            Feng.info("Please select at least one data"); // 请至少选中一条数据
            return;
        }

        var materialIds = "";
        for (var i = 0; i < data.length; i++) {
            materialIds = materialIds + data[i].id + ",";
        }
        materialIds = materialIds.substring(0, materialIds.length - 1);

        Feng.confirm("Are you sure to assign selected material category codes?", function () { // 是否批量分配选中物料大类编码?
            var ajax = new $ax(Feng.ctxPath + prefix + "/assignMaterialBatch", function (data) {
                if (data.code == 200) {
                    Feng.success("Assignment successful!"); // 分配成功！
                    parent.location.reload();
                } else {
                    Feng.error("Assignment failed! " + data.message); // 分配失败！
                }
            }, function (data) {
                Feng.error("Assignment failed! " + data.message); // 分配失败！
            });
            ajax.set("areaCode", areaCode);
            ajax.set("materialIds", materialIds);
            ajax.start();
        });
    });

    /**
     * Toolbar Event Handling
     * 工具栏事件处理
     */
    table.on('tool(basicMaterialTable)', function (obj) {
        var data = obj.data;
        var layEvent = obj.event;

        if (layEvent === 'assign') {
            assignMaterial(data);
        }
    });

    /**
     * Assign Material Category
     * 分配物料大类
     */
    function assignMaterial(data) {
        Feng.confirm("Are you sure to assign this material category code?", function () { // 是否分配此物料大类编码?
            var ajax = new $ax(Feng.ctxPath + prefix + "/assignMaterial", function (data) {
                if (data.code == 200) {
                    Feng.success("Assignment successful!"); // 分配成功！
                    parent.location.reload();
                } else {
                    Feng.error("Assignment failed! " + data.message); // 分配失败！
                }
            }, function (data) {
                Feng.error("Assignment failed! " + data.message); // 分配失败！
            });
            ajax.set("areaCode", areaCode);
            ajax.set("materialId", data.id);
            ajax.start();
        });
    }

});
